home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / library / xfalbrry.lha / XFA_Library / AmigaE / examples / xfa2iff.e < prev   
Text File  |  1995-09-06  |  2KB  |  90 lines

  1. /* This little demo program shows how to load up a XFA Anim 
  2. ** And to save it as IFF frames.
  3. **
  4. ** This code's been written in AmigaE by Fabio Rotondo.
  5. **
  6. ** Public domain program.
  7. **
  8. ** Written for ClassX.
  9. **
  10. */
  11.  
  12. MODULE 'xfa','libraries/xfa','dos/rdargs','intuition/screens',
  13.        'libraries/iffparse','graphics/gfx'
  14.  
  15.   DEF hd:PTR TO xfa_head
  16.   DEF m:mem
  17.   DEF iff:PTR TO iffhandle
  18.   DEF bmp0:PTR TO bitmap, bmp1:PTR TO bitmap
  19.   DEF sc0:PTR TO screen, sc1:PTR TO screen
  20.   DEF mode, cnt
  21.  
  22.  
  23. PROC main()
  24.   DEF args=NIL:PTR TO LONG, rdargs
  25.  
  26.   WriteF('XFA2IFF V0.1 - By Fabio Rotondo.\n')
  27.  
  28.   rdargs:=ReadArgs('NAME/A', args, NIL)
  29.   IF rdargs
  30.     IF (xfabase:=OpenLibrary('xfa.library',0))
  31.       conv(args[0])
  32.       WriteF('Operation Complete.\nFrames are in t:\n')
  33.       CloseLibrary(xfabase)
  34.     ELSE
  35.       WriteF('Cannot Open xfa.library\n')
  36.     ENDIF
  37.     FreeArgs(rdargs)
  38.   ELSE
  39.     WriteF('Bad Args.\n')
  40.   ENDIF
  41.   CleanUp(0)
  42. ENDPROC
  43.  
  44. PROC conv(txt:PTR TO CHAR)
  45.   DEF swp
  46.  
  47.   IF iff:=XfA_OpenRead(txt,0,0)
  48.     hd:=XfA_HeadPtr()
  49.     mode:=XfA_GetPackMode() AND XFA_MODEI
  50.  
  51.     IF (sc0:=OpenS(hd.bytesperrow*8, hd.rows, hd.depth, hd.modeid,'',0))
  52.       bmp0:=sc0.bitmap
  53.       XfA_UseCMap(sc0,0)
  54.       IF mode=0
  55.         IF (sc1:=OpenS(hd.bytesperrow*8, hd.rows, hd.depth, hd.modeid,'',0))
  56.           bmp1:=sc1.bitmap
  57.           XfA_UseCMap(sc1,0)
  58.         ENDIF
  59.       ENDIF
  60.       
  61.       WHILE XfA_ReadFrame(iff, {m})=0
  62.         XfA_UnPackBitMap (bmp0, m.ptr)
  63.         XfA_FreeFrame ({m})
  64.         
  65.         IF mode
  66.           IF XfA_ReadFrame(iff, {m})=0
  67.             XfA_UnPackBitMap(bmp0, m.ptr)
  68.             XfA_FreeFrame ({m})
  69.           ENDIF 
  70.         ENDIF 
  71.         XfA_SaveScreen (sc0, StringF('t:frame\d',cnt))
  72.         
  73.         IF mode=0
  74.           swp:=sc0
  75.           sc0:=sc1
  76.           sc1:=swp
  77.           
  78.           swp:=bmp0
  79.           bmp0:=bmp1
  80.           bmp1:=swp
  81.         ENDIF 
  82.         
  83.         INC cnt
  84.       ENDWHILE 
  85.       XfA_CloseRead (iff)
  86.     ENDIF
  87.   ENDIF
  88. ENDPROC
  89.  
  90.